<?php
class UsersController extends AppController {
	var $name = 'Users';
	var $component = array('RequestHandler');	
	function beforeFilter(){
		parent::beforeFilter();		
	}
	
	function edit($id = null) {
		$this->set('title_for_layout', 'Thay đổi thông tin cá nhân');
		$this->layout = "user";
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid user', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Thay đổi thông tin thành công', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('Có lỗi khi thay đổi thông tin cá nhân. Xin vui lòng thử lại.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}
		$cities = $this->User->City->find('list');
		$groups = $this->User->Group->find('list');
		$this->set(compact('groups','cities'));
	}
		
	function index() {
		$this->layout = 'user';
		$title_for_layout = "Bảng điều khiển - Quản lý thông tin cá nhân";
		
		$this->User->recursive = 2;
		$user = $this->User->read(null, $this->Auth->user('id'));
		$user_list = $this->User->find('list');
	
		$this->paginate = array(
			'Post' => array(
				'order' => array(
					'Post.created' => 'desc'
				) ,
				'limit' => 10
			)
		);
		$this->set(compact('user', 'title_for_layout', 'user_list'));
		$this->set('paginator', $this->paginate());
	}
	
	function change_password() {
		$this->set('title_for_layout' , 'Thay đổi mật khẩu');
		$this->layout = 'user';
		$this->User->recursive = -1;
		
		if (!empty($this->data)) {
		
			//Lấy password cũ của người dùng
			$oldUser = $this->User->read(null, $this->Auth->user('id'));
			$oldPass = $oldUser['User']['password'];
		
			//Kiểm tra password mà người dùng nhập vào có trùng với password cũ trong DB hay không ?
			if($oldPass == $this->Auth->password($this->data['User']['password'])) {
				$this->data['User']['password'] = $this->Auth->password($this->data['User']['password_new']);
				if ($this->User->save($this->data)) {
					$this->Session->setFlash(__('Mật khẩu mới của bạn đã được lưu thành công.', true));
					$this->redirect(array('action' => 'index'));
				} else {
					$this->Session->setFlash(__('Mật khẩu mới không thể lưu. Vui lòng thử lại !', true));
				}
			} else {
				$this->Session->setFlash('Mật khẩu cũ không đúng. Vui lòng thử lại !');
			}
			$this->data = $this->User->read(null, $this->Auth->user('id'));		
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $this->Auth->user('id'));
		}	
	}
	
	function admin_index() {
		$this->layout = "admin";
		$this->User->recursive = 0;
		$this->set('users', $this->paginate());
	}
	/**
	 * Thêm user của admin_add
	 * Xuân Thạch
	 */
	function admin_add() {
		$this->layout = "admin";
		if (!empty($this->data)) {
			$this->User->create();
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('The user has been saved', true));
				if($this->Auth->user('group_id') == 1){
					$this->redirect(array('action' => 'index'));
				}
				else {
					$this->redirect(array('controller' => 'posts' ,'action' => 'index'));	
				}
			} else {
				$this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
			}
		}
		$groups = $this->User->Group->find('list');
		$cities = $this->User->City->find('list');
		$this->set(compact('groups','cities'));
	}
	/**
	 * Chỉnh sửa thông tin user
	 * Xuân Thạch
	 */
	function admin_edit($id = null) {
	$this->layout = "admin";
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid user', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if (empty($this->data['User']['password']) || ($this->data['User']['password'] != $this->data['User']['password_confirm']) ) unset($this->data['User']['password']);
			else $this->data['User']['password'] = $this->Auth->password($this->data['User']['password']);
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('The user has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
			$this->data['User']['password'] = null;
		}
		$groups = $this->User->Group->find('list');
		$cities = $this->User->City->find('list');
		$this->set(compact('groups','cities'));
	}
	function admin_delete($id = null) {
	$this->layout = "admin";
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for user', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->User->delete($id)) {
			$this->Session->setFlash(__('User deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('User was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
	function logout(){
		$this->Cookie->delete('Auth.User');
		$this->redirect($this->Auth->logout());
	}
	/** 
	 * Login from form or cookie
	 *
	 * @Author:	Nguyen Xuan Thach
	 * @Date: 	16/04/11
	 * @Email: 	thachnuida@gmail.com
	 */
	function login() {
		$this->set('title_for_layout', 'Đăng nhập');
		$this->layout = "lam";
	//-- code inside this function will execute only when autoRedirect was set to false (i.e. in a beforeFilter).
		if ($this->Auth->user()) {
			if (!empty($this->data['User']['remember_me'])) {
				$cookie = array();
				$cookie['username'] = $this->data['User']['username'];
				$cookie['password'] = $this->data['User']['password'];
				$this->Cookie->write('Auth.User', $cookie, true, '+2 weeks');
				unset($this->data['User']['remember_me']);
				$this->Session->setFlash("Đăng nhập thành công.");
			}
			$this->redirect($this->Auth->redirect());
		}
		if (empty($this->data)) {
			$cookie = $this->Cookie->read('Auth.User');
			if (!is_null($cookie)) {
				if ($this->Auth->login($cookie)) {
					//  Clear auth message, just in case we use it.
					$this->Session->delete('Message.auth');
					$this->redirect($this->Auth->redirect());
				}
			}
		}
	}
	
	
	/** 
	 * Lay tong so thanh vien co trong web. Duoc dung trong element "thongkechung"
	 *
	 * @Author:	Le Tran Lam
	 * @Date: 	18/04/11
	 * @Email: 	tranlam181@gmail.com
	 */
	 function getSumUser(){
		return $this->User->find('count');
	 }
	 
	 /** 
	 * Tạo trang đăng kí thành viên
	 *
	 * @Author:	Nguyen Tan Viet
	 * @Date: 	20/04/11
	 * @Email: 	viethoavang@gmail.com
	 */
	function register() {
	$this->set('title_for_layout', 'Đăng ký thành viên');
	$this->layout = "lam";
		if (!empty($this->data)) {
			$this->User->create();
			if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) {
				//unset($this->data['User']['group_id']);
				if($this->User->save($this->data)){
					$this->Session->setFlash(__('Đăng ký thành công. Hãy đăng nhập và tham gia trang raovat.', true));
					$this->redirect(array('action' => 'login'));
				} else {
					$this->Session->setFlash(__('Có lỗi khi đăng ký. Xin vui lòng thử lại', true));
				}	
			} else {
				$this->Session->setFlash(__('Password không trùng nhau, vui lòng thử lại', true));
			}
			$this->data['User']['password'] = ''; // reset the password field
		}
		$groups = $this->User->Group->find('list');
		$cities = $this->User->City->find('list');
		
		$this->set(compact('groups', 'cities'));
	}
	function forgot_password(){
		$this->layout = "lam";
		$this->set('title_for_layout', 'Lấy lại mật khẩu');
		if (!empty($this->data)){
			$check = $this->User->find('first', array('conditions' => array('User.email' => $this->data['User']['email'])));
			if ($check) {
				$this->Email->from = 'raovat@itf.com';
				$this->Email->to = $this->data['User']['email'];
				$this->Email->subject = 'Lây lại mật khẩu';
				$this->Email->send('Mật khẩu mới của bạn là 123465');
				
				$check['User']['password'] = $this->Auth->password('123465');
				$this->User->save($check);
				$this->Session->setFlash('Hãy kiểm tra email để lấy lại mật khẩu của bạn.');
			}else {
				$this->Session->setFlash('Email này không tồn tại trong hệ thống. Vui lòng thử lại.');
			}
		}
	}	
	function ads (){
		$this->layout = "users";
		$this->set('title_for_layout', 'Liên hệ quảng cáo');
		
		if(!empty($this->data)){			
			$this->Email->from = $this->data['email'];
			$this->Email->to = 'raovat@itf.com';
			$this->Email->subject = 'Liên hệ quảng cáo';
			$this->Email->send('Liên hệ từ' . $this->data['name'] . 'với nội dung ' .$this->data['content']);
		}
	}
	function rule(){
		$this->layout = "users";
		$this->set('title_for_layout', 'Điều lệ');
	}
}
?>